package utils.common;

import java.text.DecimalFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Collection;
import java.util.Date;
import java.util.Map;

/**
 * 通用工具类
 * @author hubb
 *
 */
public class CommonUtils {

//=============================判断类====================================
	/**
 	 * @author 
	 * @date 
	 * @discription : 为空返回true,可以判断字符,数组,集合,Map是否为空
	 * @param object
	 * @return boolean
	 */
	@SuppressWarnings("rawtypes")
	public static boolean isEmpty(Object object) {
		if(object == null){
			
			return true;
			
		}else if(object instanceof CharSequence){
			
			return ((CharSequence) object ).length() == 0;
			
		}else if(object instanceof Collection){
			
			return ((Collection) object ).isEmpty();
			
		}else if(object instanceof Map){
			
			return ((Map) object ).isEmpty();
			
		}else if(object instanceof Object[]){
			
			return ((Object[]) object ).length == 0;
			
		}
		
		return false;
	}
	
	/**
 	 * @author 
	 * @date 
	 * @discription : 为空返回false,可以判断字符,数组,集合,Map是否为空
	 * @param object
	 * @return boolean
	 */
	@SuppressWarnings("rawtypes")
	public static boolean isNotEmpty(Object object) {
		if(object == null){
			
			return false;
			
		}else if(object instanceof CharSequence){
			
			return !(((CharSequence) object ).length() == 0);
			
		}else if(object instanceof Collection){
			
			return !(((Collection) object ).isEmpty());
			
		}else if(object instanceof Map){
			
			return !(((Map) object ).isEmpty());
			
		}else if(object instanceof Object[]){
			
			return !(((Object[]) object ).length == 0);
			
		}
		
		return true;
	}

//=============================时间，日期类====================================
	/** 
     * 将日期格式转换成指定的字符串格式 
     * 返回值如：2010-10-06 
     * @param date 要转换的日期 
     * @return 
     */  
    public static  String dateToString(Date date,String dateFormat)  {  
    	//定义将日期格式要换成的格式  
        SimpleDateFormat formatter = new  SimpleDateFormat (dateFormat);   
        String stringTime  =  formatter.format(date);  
      
        return  stringTime;  
          
	} 
    
    /** 
     * 将字符串格式转换成日期格式 
     * 返回值如：2010-10-06 
     * @param date 要转换的日期 
     * @return 
     */  
    public static  Date stringToDate(String date,String dateFormat)  {  
    	//定义将日期格式要换成的格式  
        SimpleDateFormat formatter = new  SimpleDateFormat (dateFormat);   
        Date stringTime = null;
		try {
			stringTime = formatter.parse(date);
		} catch (ParseException e) {
			e.printStackTrace();
		} 
        return  stringTime;  
          
	}
    
    /** 
     * 将日期格式转换成 指定的字符串格式 然后在转换成日期格式 
     * 返回值如：Wed Jun 15 10:49:40 CST 2016
     * @param time 要转换的日期 
     * @return 
     */  
    public static  Date dateToDate(Date time,String dateFormat)  {  
          
    	SimpleDateFormat formatter = new  SimpleDateFormat (dateFormat); //定义将日期格式要换成的格式  
        String stringTime  =  formatter.format(time);  
        Date date = null;  
	    try {  
	        date = formatter.parse(stringTime);  
	    } catch (ParseException e) {  
	        e.printStackTrace();  
	    }  
	        return  date;  
          
    }  
    
    /** 
     * 得到当前时间，以字符串表示 
     * @return 
     */  
    public static String getCurrentDate(String dateFormat){  
        Date date = new Date();  
        return CommonUtils.dateToString(date,dateFormat);  
    }

//=============================数字类====================================	
    /** 
     * 将double类型的数字保留指定位小数（四舍五入） 
     *  
     * @param number 
     * @return 
     */  
    public static String formatNumber(double number,int digit) {  
        DecimalFormat df = new DecimalFormat();
        String pattern;
        if(digit==0){
        	pattern = "#0";
    	}else{
    		pattern = "#0.";
    	}
        for(int i=0;i<digit;i++){
        	pattern += "0";
        }
        df.applyPattern(pattern);  
        return df.format(number);  
    }

//=============================main方法测试====================================
    public static void main(String[] args) {
    	System.out.println(formatNumber(4.333,0));
	}
    
}
